import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Elicopteros here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Helicoptero extends Aeronave
{   
    private int cont=0; // Contador para que no disparen en cada Actua los Helicopteros
    /**
     * El Helicopotero realiza sus acciones que debe hacer
     */
    public void act() 
    {
         determinarPosicion();
         super.move(1);
         girar();
         disparar();
    } 
    /**
     * Constructor para clase Helicoptero
     * @param r La rotacion en que debe estar el Helicoptero
     * @param t Para dibujar diferente tipo de Helicoptero 
     */
    public Helicoptero(int r, int t)
    {
        int tipo=t;
        if(tipo==1)
           super.setImage("heli.gif");
        else
        if(tipo==2)
           super.setImage("Airplane-icon.png");
        if(tipo==3)
           super.setImage("Jet.png");
        this.setRotation(r);
    }
    /**
     * Como el mundo se mueve el Avion debe de calcular su posicion actual y localizarse en ella
     */
    public void determinarPosicion()
    {
          PlaneWorld pw= (PlaneWorld)super.getWorld();
         int x1= pw.scrollSpeed;
         int y1= pw.scrollSpeedY;
         int x2= getX()-x1;
         int y2= getY()-y1;
         if(x2<4)
           x2= pw.getWidth()-5;
         if(x2>= pw.getWidth()-4)
          x2=4;
         if(y2<4)
           y2= pw.getHeight()-5;
         if(y2> pw.getHeight()-4)
           y2=4;
         setLocation(x2 , y2 );
    }
    /**
     * Gira en forma aleatoria si llega a las orillas del mundo se regresa
     */
    public void girar()
    {
        if(Greenfoot.getRandomNumber(100)<10)
           {
             turn(Greenfoot.getRandomNumber(9));
           }
        if(getX()>= getWorld().getWidth()-20 || getX() < 20)
         {
             turn(180);
         }
        if(getY()>= getWorld().getHeight()-20 || getY()<20)
        {
            turn(180);
        }
    }
    /**
     * Metodo para que Helicoptero dispare
     */
    public void disparar()
    {
        int r;
        cont=cont+1;
        if(cont==60)
        {
           int x= getX();
           int y= getY();
           Bala2 b2= new Bala2(x,y);
           World mundo=(World) super.getWorld();
           r=getRotation();
           mundo.addObject(b2,x,y);
           b2.setRotation(r);
           int x2=b2.getX();
           int y2=b2.getY();
           cont=0;
        }
    }
}
